From 416f2c3ddfd264abcb41beff1b3d1a6d2dc64cb2 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 24 Jun 2025 17:14:54 -0400 Subject: [PATCH] prepare-root: Use tempdir for transient etc backing Prep for soft reboots. Signed-off-by: Colin Walters --- src/libotcore/otcore-prepare-root.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libotcore/otcore-prepare-root.c b/src/libotcore/otcore-prepare-root.c index dcf5bead..7328698a 100644 --- a/src/libotcore/otcore-prepare-root.c +++ b/src/libotcore/otcore-prepare-root.c @@ -382,7 +382,12 @@ otcore_mount_etc (GKeyFile *config, GVariantBuilder *metadata_builder, const cha g_autofree char *target_etc = g_build_filename (mount_target, "etc", NULL); if (etc_transient) { - const char *ovldir = "/run/ostree/transient-etc"; + // Right now we just reuse the global /run tmpfs as a place to put temporary files. + // In order to handle soft reboots, we need a randomly named temporary directory. + g_autofree char *ovldir_buf = g_strdup ("/run/ostree/transient-etc.XXXXXX"); + const char *ovldir = g_mkdtemp_full (ovldir_buf, 0700); + if (!ovldir) + return glnx_throw_errno_prefix (error, "failed to create transient etc tempdir"); g_variant_builder_add (metadata_builder, "{sv}", OTCORE_RUN_BOOTED_KEY_TRANSIENT_ETC, g_variant_new_string (ovldir)); -- 2.30.2